/*
* The MIT License
*
* Copyright 2014 Hieu Le <letrunghieu.cse09@gmail.com>.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package info.hieule.framework.laravel.wizards;
import info.hieule.framework.laravel.github.LaravelGithubTags;
import info.hieule.framework.laravel.versions.LaravelVersionComparator;
import java.util.Arrays;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JLabel;
import javax.swing.event.ChangeListener;
import org.openide.util.ChangeSupport;
import org.openide.util.NbBundle;
/**
*
* @author Hieu Le <letrunghieu.cse09@gmail.com>
*/
public class NewProjectConfigurationPanel extends javax.swing.JPanel {
private String errorMessage;
private final ChangeSupport changeSupport = new ChangeSupport(this);
/**
* Creates new form NewProjectConfigurationPanel
*/
public NewProjectConfigurationPanel() {
initComponents();
_initUnzipGitHubTag();
}
public void addChangeListener(ChangeListener changeListener) {
changeSupport.addChangeListener(changeListener);
}
public void removeChangeListener(ChangeListener changeListener) {
changeSupport.removeChangeListener(changeListener);
}
void fireChange() {
changeSupport.fireChange();
}
public String getErrorMessage() {
return errorMessage;
}
/**
* Detect that user use Laravel 4
*
* @return
*/
public Boolean isLaravel4() {
// TODO support Laravel 5 later
return true;
}
public String getSelectedGithubTagUrl() {
String selectedVersion = (String) cbbGithubVersions.getSelectedItem();
LaravelGithubTags githubTags = LaravelGithubTags.getInstance();
return githubTags.getZipUrl(selectedVersion);
}
public JLabel getProgressTextComp() {
return lblProgress;
}
@NbBundle.Messages({
"NetworkError.CannotGetGithubTags=Network errors: cannot get tags from Github",
"GettingTagsFromGithub=Getting tags from Github",
"AllTagsFetched=All tags was fetched successfully, ready to create a new Laravel project"
})
private void _initUnzipGitHubTag() {
lblProgress.setText(Bundle.GettingTagsFromGithub());
LaravelGithubTags githubTags = LaravelGithubTags.getInstance();
String names[] = githubTags.getNames();
Arrays.sort(names, new LaravelVersionComparator());
cbbGithubVersions.setEnabled(true);
cbbGithubVersions.setModel(new DefaultComboBoxModel<String>(names));
if (githubTags.isNetworkError()) {
lblProgress.setText(Bundle.NetworkError_CannotGetGithubTags());
} else {
lblProgress.setText(Bundle.AllTagsFetched());
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
cbbGithubVersions = new javax.swing.JComboBox();
jLabel1 = new javax.swing.JLabel();
lblProgress = new javax.swing.JLabel();
cbbGithubVersions.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
cbbGithubVersions.setEnabled(false);
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(NewProjectConfigurationPanel.class, "NewProjectConfigurationPanel.jLabel1.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lblProgress, org.openide.util.NbBundle.getMessage(NewProjectConfigurationPanel.class, "NewProjectConfigurationPanel.lblProgress.text")); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(2, 2, 2)
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(cbbGithubVersions, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(lblProgress))
.addGap(0, 101, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cbbGithubVersions, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 266, Short.MAX_VALUE)
.addComponent(lblProgress))
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JComboBox cbbGithubVersions;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel lblProgress;
// End of variables declaration//GEN-END:variables
}